class Case(ICase):
    #note for this case if any
    note=''
    
    #ui for this case if there is.
    #if this is not define, then 'ctors' and 'ctrls'
    #will not be used
    xrcfile='sample.xrc'
    
    #custom controls ctor map if any
    ctors={}
    
    #define which controls should be save in Case.ctrls.
    #each name list in this tuple will be a data member of
    #Case.ctrl, you can visit these controls by use Case.ctrl.MyPanel...
    widgets=('panel', 'btA', 'btB', 'btC')
    
    #main case class, must have.
    #note:before create a instance of this class, the 'xrcfile' is already
    #loaded and 'ctrls' already contained corrent controls by RotorOpenGL
    def __init__(self):
        ICase.__init__(self)
        self.ctrls.btA.Bind(wx.EVT_BUTTON, self.OnButton)
    
    def OnButton(self, event):
        print('btA clicked')

    #init OpenGL if want
    def InitGL(self):
        print('InitGL')
        glMatrixMode(GL_PROJECTION)
        glFrustum(-0.5, 0.5, -0.5, 0.5, 1.0, 3.0)

        # position viewer
        glMatrixMode(GL_MODELVIEW)
        glTranslatef(0.0, 0.0, -2.0)

        glEnable(GL_DEPTH_TEST)
        glEnable(GL_LIGHTING)
        glEnable(GL_LIGHT0)

	def OnMouseMotion(self, event):
		pass

    #main render function
    def Render(self):
        print('new renderrrrrr')
        glClearColor(1, 0, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
